//class for show queries function, by Fransiska Putri Wina
#ifndef MENU_SHOW_QUERIES_H_ 
#define MENU_SHOW_QUERIES_H_

#include <iostream>
#include <string>
#include <stdexcept>
#include <vector>
//other types
#include "Category.h"
#include "Menu_Item.h"
#include "Recipe.h"
#include "Ingredient.h"
#include "Order.h"
#include "Order_Item.h"


class Menu_Show_Queries 
{
public:
        //default constructor
        Menu_Show_Queries();

     struct type_b1c
		{
			string item_name;
			double price;
			string description;
			
			bool operator< (const type_b1c& c) const{
				return this->price < c.price;
			}
		};

        struct type_c1a
		{
			int order_id;
			Date order_date;
			double price;
			
			bool operator< (const type_c1a& a) const{
				return this->order_date < a.order_date;
			}
		};
		
		struct type_c1b 
		{
			string menu_item_name;
			double price;
			
			bool operator< (const type_c1b& b) const{
				return this->price < b.price;
			}
		};
		 
    	//procedure for solving B1a problem, by Fransiska Putri Wina
		void B1a(vector<Menu_Item>,vector<Recipe>,vector<Ingredient>); 
      
		//procedure for solving B1b problem, by Muhammad Ghufron Mahfudhi
		void B1b(vector<Menu_Item>, vector<Recipe>);
		
    	//procedure for solving B1c problem, by Fransiska Putri Wina
		void B1c(vector<Menu_Item>,vector<Category>);
      
		//procedure for solving C1a problem, by Fransiska Putri Wina
		void C1a(vector<Order>, vector<Order_Item>, vector<Menu_Item>);
		
		//procedure for solving C1b problem, by Fransiska Putri Wina
		void C1b (vector<Order>, vector<Order_Item>, vector<Menu_Item>);
        
};
#endif //MENU_SHOW_QUERIES_H_
